package com.yssoft.mapper.supplier;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.yssoft.controller.supervise.ProductionInfo;
import com.yssoft.entity.supplier.CirculationInfo;
import com.yssoft.entity.supplier.InstockInfo;
import com.yssoft.entity.supplier.OutstockInfo;
import com.yssoft.entity.supplier.ProcurementInfo;
import com.yssoft.entity.supplier.ProductionBatch;
import com.yssoft.entity.supplier.ProductionBatchCustom;
import com.yssoft.entity.supplier.TEnterpriseCustom;

public interface TraceabilityQueryMapper {
	/**
	 * 
	    * @Title: queryProductDetailByWorksheetId
	    * @Description: 根据加工单id或者产品id查询产品信息
	    * @param @param param
	    * @param @return    参数
	    * @return ProductCountCustom    返回类型
	    * @throws
	 */
	Map<String, Object>  queryProductDetailByWorksheetId(Map param);
	/**
	 * 
	    * @Title: queryProductImgList
	    * @Description: 根据商品id查询所有图片列表
	    * @param @param param
	    * @param @return    参数
	    * @return List<Map>    返回类型
	    * @throws
	 */
	List<Map<String, Object> > queryProductImgList(Map param);
	/**
	 * 
	    * @Title: selectMaterialList
	    * @Description: TODO(这里用一句话描述这个方法的作用)
	    * @param @return    参数
	    * @return List<Map<String,Object>>    返回类型
	    * @throws
	 */
	List<Map<String, Object>> selectMaterialList();
	/**
	 * 
	    * @Title: queryEnterpriseById
	    * @Description: 查询企业信息
	    * @param @param param
	    * @param @return    参数
	    * @return TEnterpriseCustom    返回类型
	    * @throws
	 */
	TEnterpriseCustom queryEnterpriseById(Map param);
	/**
	 * 
	    * @Title: queryProductionBatchByBatchId
	    * @Description: 查询批次信息
	    * @param @param param
	    * @param @return    参数
	    * @return ProductionBatchCustom    返回类型
	    * @throws
	 */
	ProductionBatchCustom queryProductionBatchByBatchId(Map param);
	/**
	 * 
	    * @Title: queryProductionInfoList
	    * @Description: 查询产品生产信息
	    * @param @param param
	    * @param @return    参数
	    * @return List<ProductionInfo>    返回类型
	    * @throws
	 */
	List<ProductionInfo> queryProductionInfoList(Map param);
	/**
	 * 根据企业id查询产品列表
	 * @param enterpriseId 企业ID，可为null查询所有产品
	 * @return
	 */
	List<Map<String,Object>>  queryAllProduct(@Param("enterpriseId") String enterpriseId);
	/**
	 * 
	 * @param productId
	 * @param code
	 * @return
	 */
	List<Map<String,Object>>  queryAllBatch(String productId, String code);
	/**
	 * 
	    * @Title: queryCirculationInfoList
	    * @Description: 根据加工单信息id查询
	    * @param @param custom
	    * @param @return    参数
	    * @return List<CirculationInfo>    返回类型
	    * @throws
	 */
	List<CirculationInfo> queryCirculationInfoList(ProductionBatch custom);
	/**
	 * 
	    * @Title: queryProcurementInfoListByWorksheetId
	    * @Description: 根据加工单id查询采购信息
	    * @param @param worksheetId
	    * @param @return    参数
	    * @return List<ProcurementInfo>    返回类型
	    * @throws
	 */
	List<ProcurementInfo> queryProcurementInfoListByWorksheetId(int worksheetId);
	/**
	 * 
	    * @Title: selectMaterialListByWorksheetId
	    * @Description: 根据加工单查询物料信息
	    * @param @param worksheetId
	    * @param @return    参数
	    * @return List<Map<String,Object>>    返回类型
	    * @throws
	 */
	List<Map<String, Object>> selectMaterialListByWorksheetId(@Param("list")List<ProcurementInfo> list, @Param("param")Map<String,Object> param);
	/**
	 * 
	    * @Title: collarMaterialList
	    * @Description: 领料主单信息
	    * @param @param worksheetId
	    * @param @return    参数
	    * @return List<Map<String,Object>>    返回类型
	    * @throws
	 */
	List<Map<String, Object>> collarMaterialList(String worksheetId);
	/**
	 * 
	    * @Title: collarMaterialdDetailList
	    * @Description: 领料详情list
	    * @param @param worksheetId
	    * @param @param mainList
	    * @param @return    参数
	    * @return List<Map<String,Object>>    返回类型
	    * @throws
	 */
	List<Map<String, Object>> collarMaterialdDetailList(@Param("worksheetId") String worksheetId, @Param("list")List<Map<String, Object>> mainList);
	/**
	 * 
	    * @Title: queryOutstockInfoList
	    * @Description: 根据加工单查询出库记录
	    * @param @param map
	    * @param @return    参数
	    * @return OutstockInfo    返回类型
	    * @throws
	 */
	OutstockInfo queryOutstockInfoList(Map<String, Object> map);
	/**
	 * 
	    * @Title: queryInstockInfoList
	    * @Description: 根据加工单查询入库记录
	    * @param @param map
	    * @param @return    参数
	    * @return InstockInfo    返回类型
	    * @throws
	 */
	InstockInfo queryInstockInfoList(Map<String, Object> map);
	/**
	 * 
	    * @Title: queryLabelByWorksheetId
	    * @Description:根据加工单查询批量溯源标签码
	    * @param @param custom
	    * @param @return    参数
	    * @return Map<String,Object>    返回类型
	    * @throws
	 */
	Map<String, Object> queryLabelByWorksheetId(ProductionBatch custom);
	/**
	 * 
	    * @Title: queryCollarMaterialDetailListByWorksheetId
	    * @Description: 根据加工单id查询所有领料明细
	    * @param @param param
	    * @param @return    参数
	    * @return List<Map<String,Object>>    返回类型
	    * @throws
	 */
	List<Map<String, Object>> queryCollarMaterialDetailListByWorksheetId(Map<String,Object> param);
	/**
	 * @param collarMaterialDetailList 
	 * 
	    * @Title: queryOutstockApplyDetailListByCollarMaterialDetailId
	    * @Description: 根据申请物料明细id查询入库申请明细id
	    * @param @param param
	    * @param @return    参数
	    * @return List<Map<String,Object>>    返回类型
	    * @throws
	 */
	List<Map<String, Object>> queryInstockApplyDetailListByCollarMaterialDetailId(@Param("obj") Map<String, Object> param, @Param("list")List<Map<String, Object>> collarMaterialDetailList);
	List<ProcurementInfo> queryProcurementInfoListByInstockApplyDetailList(@Param("obj")Map<String, Object> param,@Param("list")List<Map<String, Object>> instockApplyDetailList);
			
	 

}
